<template>
	    <transition name="slide-up">
    <div class="setting-wrapper" v-show="menuVisible && settingVisible === 2">
      <div class="setting-progress">
				<div class="read-time-warpper">
					<span class="read-time-text">{{getReadTimeText()}}</span>
					<span class="icon-forward"></span>
				</div>
        <div class="progress-wrapper">
					<div class="progress-icon-wrapper" @click="prevSection()">
						<span class="icon-back"></span>
					</div>
          <input class="progress" type="range"
            max="100"
            min="0"
            step="1"
            @change="onProgressChange($event.target.value)" @input="onProgressInput($event.target.value)"
            :value="progress"
            :disabled="!bookAvailable"
            ref="progress">
					<div class="progress-icon-wrapper"  @click="nextSection()">
						<span class="icon-forward"></span>
					</div>
        </div>
        <div class="text-wrapper">
					<span class="progress-section-text">{{getSectionName}}</span>
          <span>({{bookAvailable ? progress + '%' : '加载中...'}})</span>
        </div>
      </div>
    </div>
  </transition>
</template>

<script>
import { ebookMixin } from '../../utils/mixin'

export default {
	mixins: [ebookMixin],
	methods: {
		onProgressChange(progress) {
			// 拖动进度条切换到相应的页数
			this.setProgress(progress).then(() => {
				this.displayProgress()
				this.updateProgressBg()
			})
		},
		onProgressInput(progress) {
			// 拖到进度条，进度百分比发生变化
			this.setProgress(progress).then(() => {
				this.displayProgress()
				this.updateProgressBg()
			})
		},
		displayProgress() {
			const cfi = this.currentBook.locations.cfiFromPercentage(this.progress / 100)
			this.display(cfi)
		},
		updateProgressBg() {
			// 进度条左侧部分背景加深
			this.$refs.progress.style.backgroundSize = `${this.progress}% 100%`
		},
		prevSection() { // 点击切换上一章
			if (this.section > 0 && this.bookAvailable) {
				this.setSection(this.section - 1).then(() => {
					this.displaySection()
				})
			}
		},
		nextSection() { // 点击切换下一章
			if (this.section < this.currentBook.spine.length - 1 && this.bookAvailable) {
				this.setSection(this.section + 1).then(() => {
					this.displaySection()
				})
			}
		},
		displaySection() {
			// 获取章节的信息对象
			const sectionInfo = this.currentBook.section(this.section)
			// 渲染章节
			if (sectionInfo && sectionInfo.href) {
				this.display(sectionInfo.href)
			}
		}
	},
	updated() {
		// 初始化进度条左侧的背景
		this.updateProgressBg()
	}
}
</script>

<style lang="scss" rel="stylesheet/scss" scoped>
	// $ratio: 375 / 10;

	// @function px2rem($px) {
  //   @return $px / $ratio + rem;
	// }

	// @mixin center {
	// 	display: flex;
	// 	justify-content: center;
	// 	align-items: center;
	// }

	// @mixin left {
	// 	display: flex;
	// 	justify-content: flex-start;
	// 	align-items: center;
	// }

	// @mixin right {
	// 	display: flex;
	// 	justify-content: flex-end;
	// 	align-items: center;
	// }

	// @mixin ellipsis {
	// 	text-overflow: ellipsis;
	// 	overflow: hidden;
	// 	white-space: nowrap;
	// }

	@import "../../assets/styles/global.scss";

  .setting-wrapper {
    position: absolute;
    bottom: px2rem(48);
    left: 0;
    z-index: 160;
    width: 100%;
    height: px2rem(90);
    background: white;
    box-shadow: 0 px2rem(-8) px2rem(8) rgba(0, 0, 0, .15);
    .setting-progress {
      position: relative;
      width: 100%;
      height: 100%;
		 	.read-time-warpper {
				position: absolute;
				left: 0;
				top: 0;
				width: 100%;
				height: px2rem(40);
				@include center;
				font-size: px2rem(12);
		 	}
      .progress-wrapper {
        width: 100%;
        height: 100%;
        @include center;
        padding: 0 px2rem(15);
        box-sizing: border-box;
				.progress-icon-wrapper {
					font-size: px2rem(20);
				}
        .progress {
          width: 100%;
          -webkit-appearance: none;
          height: px2rem(2);
					margin: 0 px2rem(10);
          &:focus {
            outline: none;
          }
          &::-webkit-slider-thumb {
            -webkit-appearance: none;
            height: px2rem(20);
            width: px2rem(20);
            border-radius: 50%;
            background: white;
            box-shadow: 0 4px 4px 0 rgba(0, 0, 0, .15);
            border: px2rem(1) solid #ddd;
          }
        }
      }
      .text-wrapper {
        position: absolute;
        left: 0;
        bottom: px2rem(10);
        width: 100%;
        color: #333;
        font-size: px2rem(12);
				padding: 0 px2rem(15);
				box-sizing: border-box;
        // text-align: center;
				@include center;
				.progress-section-text {
					@include ellipsis;
				}
      }
    }
  }	
</style>
